Spring JDBC ডেটাবেস থেকে ডেটা রিট্রাইভ করার জন্য RowMapper
এবং ResultSetExtractor
ইন্টারফেস সরবরাহ করে। এদের মাধ্যমে ডেটাকে জাভার অবজেক্টে ম্যাপ করা সহজ হয় এবং কোড আরও পরিষ্কার এবং সংগঠিত হয়।
RowMapper
ইন্টারফেস ব্যবহার করে প্রতিটি ডেটাবেস রেকর্ডকে একটি অবজেক্টে ম্যাপ করা হয়। এটি প্রতিটি রো প্রসেস করার জন্য একটি mapRow()
মেথড সরবরাহ করে।
public interface RowMapper<T> {
T mapRow(ResultSet rs, int rowNum) throws SQLException;
}
ধরা যাক, আমাদের একটি Employee
ক্লাস এবং employees
টেবিল আছে।
Employee.java
public class Employee {
private int id;
private String name;
private String department;
// Getters and Setters
}
ডেটা রিট্রাইভ করার উদাহরণ:
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.RowMapper;
import org.springframework.jdbc.datasource.DriverManagerDataSource;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.List;
public class RowMapperExample {
public static void main(String[] args) {
// DataSource সেটআপ
DriverManagerDataSource dataSource = new DriverManagerDataSource();
dataSource.setDriverClassName("com.mysql.cj.jdbc.Driver");
dataSource.setUrl("jdbc:mysql://localhost:3306/mydb");
dataSource.setUsername("root");
dataSource.setPassword("password");
JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
// SQL Query
String query = "SELECT * FROM employees";
// RowMapper Implementation
List<Employee> employees = jdbcTemplate.query(query, new RowMapper<Employee>() {
@Override
public Employee mapRow(ResultSet rs, int rowNum) throws SQLException {
Employee employee = new Employee();
employee.setId(rs.getInt("id"));
employee.setName(rs.getString("name"));
employee.setDepartment(rs.getString("department"));
return employee;
}
});
// Output Results
for (Employee emp : employees) {
System.out.println("ID: " + emp.getId() + ", Name: " + emp.getName() + ", Department: " + emp.getDepartment());
}
}
}
List<Employee> employees = jdbcTemplate.query(query, (rs, rowNum) -> {
Employee employee = new Employee();
employee.setId(rs.getInt("id"));
employee.setName(rs.getString("name"));
employee.setDepartment(rs.getString("department"));
return employee;
});
ResultSetExtractor
ইন্টারফেস ব্যবহার করে পুরো ResultSet
প্রসেস করা হয়। এটি বড় ডেটাসেট বা কাস্টম লজিক প্রয়োগের জন্য উপযোগী।
public interface ResultSetExtractor<T> {
T extractData(ResultSet rs) throws SQLException, DataAccessException;
}
ডেটা রিট্রাইভ করার উদাহরণ:
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.ResultSetExtractor;
import org.springframework.jdbc.datasource.DriverManagerDataSource;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
public class ResultSetExtractorExample {
public static void main(String[] args) {
// DataSource সেটআপ
DriverManagerDataSource dataSource = new DriverManagerDataSource();
dataSource.setDriverClassName("com.mysql.cj.jdbc.Driver");
dataSource.setUrl("jdbc:mysql://localhost:3306/mydb");
dataSource.setUsername("root");
dataSource.setPassword("password");
JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
// SQL Query
String query = "SELECT * FROM employees";
// ResultSetExtractor Implementation
List<Employee> employees = jdbcTemplate.query(query, new ResultSetExtractor<List<Employee>>() {
@Override
public List<Employee> extractData(ResultSet rs) throws SQLException {
List<Employee> employeeList = new ArrayList<>();
while (rs.next()) {
Employee employee = new Employee();
employee.setId(rs.getInt("id"));
employee.setName(rs.getString("name"));
employee.setDepartment(rs.getString("department"));
employeeList.add(employee);
}
return employeeList;
}
});
// Output Results
for (Employee emp : employees) {
System.out.println("ID: " + emp.getId() + ", Name: " + emp.getName() + ", Department: " + emp.getDepartment());
}
}
}
বৈশিষ্ট্য | RowMapper | ResultSetExtractor |
---|---|---|
প্রক্রিয়াকরণ পদ্ধতি | প্রতিটি রো প্রসেস করে। | পুরো ResultSet প্রসেস করে। |
উপযোগিতা | সাধারণ ক্ষেত্রে ব্যবহৃত হয়। | বড় বা জটিল ডেটাসেটের জন্য ব্যবহৃত। |
সহজতা | সহজ এবং ক্লিন কোড তৈরি করে। | কাস্টম লজিক প্রয়োগের জন্য কার্যকর। |
RowMapper
:SELECT
স্টেটমেন্টের ফলাফল ম্যাপ করা।ResultSetExtractor
:Spring JDBC-তে RowMapper
এবং ResultSetExtractor
ডেটা ম্যাপিংয়ের জন্য শক্তিশালী টুল। আপনার প্রয়োজন অনুযায়ী এই দুটি ইন্টারফেস ব্যবহার করে সহজে ডেটাবেস থেকে ডেটা রিট্রাইভ এবং প্রসেস করা যায়।
Read more